<?php

class PenduduksController extends \BaseController {

	/**
	 * Display a listing of penduduks
	 *
	 * @return Response
	 */
	public function index()
	{
		$agamas = array('' => 'Semua agama') + Agama::where('is_active', '1')->orderBy('nama','ASC')->lists('nama', 'id');
		$pendidikans = array('' => 'Semua pendidikan') + Pendidikan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
		$jenispekerjaans = array('' => 'Semua pekerjaan') + JenisPekerjaan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');

		return View::make('penduduks.index')
						->with(compact('agamas'))
						->with(compact('pendidikans'))
						->with(compact('jenispekerjaans'));
	}

	/**
	 * Show the form for creating a new penduduk
	 *
	 * @return Response
	 */
	public function check()
	{
		return View::make('penduduks.check');
	}

	/**
	 * Store a newly created penduduk in storage.
	 *
	 * @return Response
	 */
	public function create()
	{

		$nik = Input::get('nik');
		$penduduk = Penduduk::where('nik', $nik)
								->where('is_active', '1')
								->first();

		if(count($penduduk) > 0){
			$agamas = array('' => '- - Pilih Agama - -') + Agama::where('is_active', '1')->orderBy('nama','ASC')->lists('nama', 'id');
			$pendidikans = array('' => '- - Pilih Jenis Pendidikan - -') + Pendidikan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
			$jenispekerjaans = array('' => '- - Pilih Jenis Pekerjaan - -') + JenisPekerjaan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
			$statuskeluargas = array('' => '- - Pilih Status Keluarga - -') + StatusKeluarga::where('is_active', '1')->orderBy('id','ASC')->lists('nama', 'id');

			return View::make('penduduks.edit')
								->with(compact('penduduk'))
								->with(compact('agamas'))
								->with(compact('pendidikans'))
								->with(compact('jenispekerjaans'))
								->with(compact('statuskeluargas'));
		}else{
			$agamas = array('' => '- - Pilih Agama - -') + Agama::where('is_active', '1')->orderBy('nama','ASC')->lists('nama', 'id');
			$pendidikans = array('' => '- - Pilih Jenis Pendidikan - -') + Pendidikan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
			$jenispekerjaans = array('' => '- - Pilih Jenis Pekerjaan - -') + JenisPekerjaan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
			$statuskeluargas = array('' => '- - Pilih Status Keluarga - -') + StatusKeluarga::where('is_active', '1')->orderBy('id','ASC')->lists('nama', 'id');

			return View::make('penduduks.create')
								->with(compact('nik'))
								->with(compact('penduduk'))
								->with(compact('agamas'))
								->with(compact('pendidikans'))
								->with(compact('jenispekerjaans'))
								->with(compact('statuskeluargas'));
		}
	}

	/**
	 * Store a newly created penduduk in storage.
	 *
	 * @return Response
	 */
	public function store()
	{
		$validator = Validator::make($data = Input::all(), Penduduk::$rules);

		if ($validator->fails())
		{
			return Redirect::back()->withErrors($validator)->withInput();
		}

		Penduduk::create($data);

		return Redirect::route('penduduks.index');
	}

	/**
	 * Display the specified penduduk.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function show($id)
	{
		$pendudukRelation = Penduduk::with('agama', 'pendidikan', 'jenisPekerjaan', 'statusKeluarga')->get();
		$penduduk = Penduduk::findOrFail($id);

		return View::make('penduduks.show')
					->with(compact('pendudukRelation'))
					->with(compact('penduduk'));
	}

	/**
	 * Show the form for editing the specified penduduk.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function edit($id)
	{
		$penduduk = Penduduk::find($id);

		$agamas = array('' => '- - Pilih Agama - -') + Agama::where('is_active', '1')->orderBy('nama','ASC')->lists('nama', 'id');
		$pendidikans = array('' => '- - Pilih Jenis Pendidikan - -') + Pendidikan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
		$jenispekerjaans = array('' => '- - Pilih Jenis Pekerjaan - -') + JenisPekerjaan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
		$statuskeluargas = array('' => '- - Pilih Status Keluarga - -') + StatusKeluarga::where('is_active', '1')->orderBy('id','ASC')->lists('nama', 'id');

		return View::make('penduduks.edit')
							->with(compact('nik'))
							->with(compact('penduduk'))
							->with(compact('agamas'))
							->with(compact('pendidikans'))
							->with(compact('jenispekerjaans'))
							->with(compact('statuskeluargas'));
	}

	/**
	 * Update the specified resource in storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function update($id)
	{
		$validator = Validator::make($data = Input::all(), Penduduk::$rules);

		if ($validator->fails())
		{
			return Redirect::back()->withErrors($validator)->withInput();
		}

		Penduduk::create($data);

		$penduduk = Penduduk::findOrFail($id);
		$penduduk->is_active = 0;
		$penduduk->save();

		return Redirect::route('penduduks.index');
	}

	/**
	 * Remove the specified resource from storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function destroy($id)
	{

		$penduduk = Penduduk::findOrFail($id);
		$penduduk->is_active = 0;
		$penduduk->action = 3;
		$penduduk->save();

		return Redirect::route('penduduks.index');
	}

	public function filter()
	{
		$agamas = array('' => 'Semua agama') + Agama::where('is_active', '1')->orderBy('nama','ASC')->lists('nama', 'id');
		$pendidikans = array('' => 'Semua pendidikan') + Pendidikan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');
		$jenispekerjaans = array('' => 'Semua pekerjaan') + JenisPekerjaan::where('is_active', '1')->orderBy('id','DSC')->lists('nama', 'id');

		return View::make('penduduks.filter')
						->with(compact('agamas'))
						->with(compact('pendidikans'))
						->with(compact('jenispekerjaans'));
	}

	public function penduduksPerKK()
	{
		$no_kk = Input::get('no_kk');

		$penduduks = Penduduk::active()->where('no_kk', '=', $no_kk)->get();
		return View::make('penduduks.partials.penduduksperkk')
				->with(compact('penduduks'));					
	}

	public function datatableAllPenduduks()
	{
		$penduduks = DB::table('penduduks')    					    					
    					->join('jenis_pekerjaans', 'penduduks.jenis_pekerjaan_id', '=', 'jenis_pekerjaans.id')
    					->join('status_keluargas', 'penduduks.status_keluarga_id', '=', 'status_keluargas.id')
    					->join('agamas', 'penduduks.agama_id', '=', 'agamas.id')
    					->join('pendidikans', 'penduduks.pendidikan_id', '=', 'pendidikans.id')
    					->select(array(
    						'penduduks.id',
    						'penduduks.nik',
    						'penduduks.no_kk',
    						'penduduks.nama',
    						DB::raw('YEAR(CURDATE())-YEAR(tanggal_lahir) AS umur'),
    						'penduduks.jenis_kelamin',
    						'penduduks.golongan_darah',
    						'penduduks.status_kawin',
    						'penduduks.is_lokal',
    						'agamas.nama AS agama',
    						'status_keluargas.nama AS status_keluarga',
    						'jenis_pekerjaans.nama AS jenis_pekerjaan',
    						'pendidikans.nama AS pendidikan'
    						));

		if(Input::get('fl_nik') != "") {
  		$penduduks = $penduduks->where('penduduks.nik', 'LIKE', '%'.Input::get('fl_nik').'%');
  	}
  	if(Input::get('fl_no_kk') != "") {
  		$penduduks = $penduduks->where('penduduks.no_kk', 'LIKE', '%'.Input::get('fl_no_kk').'%');	
  	}
		if(Input::get('fl_nama') != "") {
  		$penduduks = $penduduks->where('penduduks.nama', 'LIKE', '%'.Input::get('fl_nama').'%');
  	}
  	if(Input::get('fl_jk') != "") {
  		$penduduks = $penduduks->where('penduduks.jenis_kelamin', '=', Input::get('fl_jk'));
  	}
  	if(Input::get('fl_gol') != "") {
  		$penduduks = $penduduks->where('penduduks.golongan_darah', '=', Input::get('fl_gol'));
  	}
  	if(Input::get('fl_kawin') != "") {
  		$penduduks = $penduduks->where('penduduks.status_kawin', '=', Input::get('fl_kawin'));
  	}
  	if(Input::get('fl_lokal') != "") {
  		$penduduks = $penduduks->where('penduduks.is_lokal', '=', Input::get('fl_lokal'));
  	}
  	if(Input::get('fl_agama') != "") {
  		$penduduks = $penduduks->where('penduduks.agama_id', '=', Input::get('fl_agama'));
  	}
  	if(Input::get('fl_pekerjaan') != "") {
  		$penduduks = $penduduks->where('penduduks.jenis_pekerjaan_id', '=', Input::get('fl_pekerjaan'));
  	}
  	if(Input::get('fl_pendidikan') != "") {
  		$penduduks = $penduduks->where('penduduks.pendidikan_id', '=', Input::get('fl_pendidikan'));
  	}
  	if(Input::get('fl_umur_awal') != "") {
  		$penduduks = $penduduks->where(DB::raw('YEAR(CURDATE())-YEAR(tanggal_lahir)'), '>=', Input::get('fl_umur_awal'));
  	}
  	if(Input::get('fl_umur_akhir') != "") {
  		$penduduks = $penduduks->where(DB::raw('YEAR(CURDATE())-YEAR(tanggal_lahir)'), '<=', Input::get('fl_umur_akhir'));
  	}
  	$penduduks = $penduduks->where('penduduks.is_active', '=', '1')->orderBy('penduduks.nama','ASC');

		return Datatables::of($penduduks)
		->add_column('operations', '<div class="btn-group">
										<a href="{{ URL::route(\'penduduks.show\', $id) }}" class="btn btn-default btn-tooltip" data-toggle="tooltip" data-placement="top" data-original-title="Detail"><i class="fa fa-list text-success"></i></a>
										<a href="{{ URL::route(\'penduduks.edit\', $id) }}" class="btn btn-default btn-tooltip" data-toggle="tooltip" data-placement="top" data-original-title="Edit"><i class="fa fa-pencil text-warning"></i></a>
										<a href="{{ URL::route(\'penduduks.destroy\', $id) }}" class="btn btn-default btn-delete" data-toggle="tooltip" data-placement="top" data-original-title="Hapus"><i class="fa fa-times text-danger"></i></a>
									</div>')
		->edit_column('is_lokal', '{{ $is_lokal == 1 ? "Lokal" : "Dinas" }}')
		->make();
	}

}